package pl.edu.pk.psb.bc.bo;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import pl.edu.pk.psb.bc.assembler.OdlegloscAssembler;
import pl.edu.pk.psb.bc.assembler.PrzystanekAssembler;
import pl.edu.pk.psb.bc.dao.OdlegloscDao;
import pl.edu.pk.psb.bc.ds.OdlegloscDs;
import pl.edu.pk.psb.bc.ds.PrzystanekDs;
import pl.edu.pk.psb.bc.dto.OdlegloscDto;
import pl.edu.pk.psb.bc.dto.PrzystanekDto;

@Component
public class OdlegloscBoImpl implements OdlegloscBo {

	@Autowired
	OdlegloscDao odlegloscDao;
	
	@Autowired
	OdlegloscAssembler odlegloscAssembler;
	
	@Autowired
	PrzystanekAssembler przystanekAssembler;
	
	@Override
	@Transactional
	public void zapiszOdleglosci(Set<OdlegloscDto> zbiorOdleglosciDto, PrzystanekDs przystPoczDs) {
		odlegloscDao.zapisz(odlegloscAssembler.konwertujDoDs(zbiorOdleglosciDto, przystPoczDs));		
	}

	@Override
	@Transactional
	public List<OdlegloscDto> pobierzPowiazanePrzystanki(int idPrzystanku) {
		return odlegloscAssembler.konwertujDoListyDto(odlegloscDao.pobierzPowiazanePrzystanki(idPrzystanku));
	}

	@Override
	@Transactional
	public void usun(Integer id) {
		OdlegloscDs odl = new OdlegloscDs();
		odl.setId(id);
		odlegloscDao.usun(odl);		
	}

	@Override
	public List<OdlegloscDto> pobierzPowiazanePrzystankiPlusCeny(Integer id) {
		
		return odlegloscAssembler.konwertujDoListyDto(odlegloscDao.pobierzPowiazanePrzystanki(id));
	}

}
